package com.gl.glcourses.vos;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

@Entity
public class Curso implements Serializable, IValueObject {

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	private Date fechaBaja;
	// @OneToMany(mappedBy =
	// "curso",fetch=FetchType.EAGER,cascade=CascadeType.ALL)//cascada
	// private List<Presupuesto> presupuestos;
	// @OneToMany//no cascada
	@ManyToMany(targetEntity = TipoCurso.class)
	private List<TipoCurso> tipoCurso = new java.util.ArrayList<TipoCurso>();
	private String nombre;
	private String requisitos;
	private String objetivo;
	private String bibliografia;
	private int prioridad;
    @Column(length = 1000)
	private String tematica;
	private String comentario;

	
	// @OneToMany(mappedBy =
	// "curso",fetch=FetchType.EAGER,cascade=CascadeType.ALL)//cascada
	// private List<Adjunto> adjuntos;
	private int cantidadMinutosTotal;
	// @ManyToMany(targetEntity=Perfil.class,cascade={CascadeType.PERSIST,
	// CascadeType.MERGE})
	@ManyToMany(targetEntity = Perfil.class)
	private List<Perfil> perfil = new java.util.ArrayList<Perfil>();
	@OneToMany(mappedBy = "curso", cascade = CascadeType.ALL)
	private List<MaterialAdjunto> materialesAdjunto;

	public List<MaterialAdjunto> getMaterialesAdjunto() {
		return materialesAdjunto;
	}
	public void setMaterialesAdjunto(List<MaterialAdjunto> materialesAdjunto) {
		this.materialesAdjunto = materialesAdjunto;
	}
	public String getBibliografia() {
		return bibliografia;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Date getFechaBaja() {
		return fechaBaja;
	}
	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}

	public void setBibliografia(String bibliografia) {
		this.bibliografia = bibliografia;
	}
	public List<TipoCurso> getTipoCurso() {
		return tipoCurso;
	}
	public void setTipoCurso(List<TipoCurso> tipoCurso) {
		this.tipoCurso = tipoCurso;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getRequisitos() {
		return requisitos;
	}
	public void setRequisitos(String requisitos) {
		this.requisitos = requisitos;
	}

	public String getObjetivo() {
		return objetivo;
	}
	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}
	public int getCantidadMinutosTotal() {
		return cantidadMinutosTotal;
	}
	public void setCantidadMinutosTotal(int cantidadMinutosTotal) {
		this.cantidadMinutosTotal = cantidadMinutosTotal;
	}
	public List<Perfil> getPerfil() {
		return perfil;
	}
	public void setPerfil(List<Perfil> perfil) {
		this.perfil = perfil;
	}
	public int getPrioridad() {
		return prioridad;
	}
	public void setPrioridad(int prioridad) {
		this.prioridad = prioridad;
	}
	public String getTematica() {
		return tematica;
	}
	public void setTematica(String tematica) {
		this.tematica = tematica;
	}
	public String getComentario() {
		return comentario;
	}
	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

//	public void addMaterialAdj(MaterialAdjunto materialAdj) {
//		materialAdjunto.add(materialAdj);
//	}

}
